package com.efast.cafe.portal.dao.common;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.efast.cafe.portal.bean.common.PortalTagCountBean;
import com.efast.cafe.portal.bean.common.PortalTagEntityCountBean;
import com.efast.cafe.portal.bean.common.PortalTagMapBean;
import com.efast.cafe.portal.bean.common.PortalTagPostParamBean;
import com.efast.cafe.portal.entity.common.PortalTagMap;

public interface PortalTagDao {

	/**
	 * flag为true的时候，倒叙查询使用频率最高的6条tag，flag为false的时候，查询当前企业的该用户的所有tag
	 * 获取tag列表 以及tag被引用次数统计
	 * @return
	 */
	public List<PortalTagCountBean> queryTagsCount(@Param(value="companyCode")String companyCode,@Param(value="username")String username,@Param(value="flag")boolean flag,@Param(value="referenceId")String referenceId);

	/**
	 * 查询某个tag下的实体引用数量
	 * @param companyCode
	 * @param username
	 * @param tagId
	 * @return
	 */
	public List<PortalTagEntityCountBean> queryTagsMapCount(@Param(value="companyCode")String companyCode,@Param(value="username")String username,@Param(value="tagName")String tagName);


	/**
	 * 获取tag实体的明细列表
	 * @param companyCode
	 * @param username
	 * @param entityName
	 * @param tagId
	 * @return
	 */
	public List<PortalTagMapBean> queryTagsMapDetail(@Param(value="companyCode")String companyCode,@Param(value="username")String username,@Param(value="entityName")String entityName,@Param(value="tagName")List<String> tagName,@Param(value="version")String version,@Param(value="indentifier")String indentifier);

	public void deleteTags(@Param(value="entityName")String entityName,@Param(value="entityId")Integer entityId,@Param(value="companyCode")String companyCode,@Param(value="username")String username);
	
	public void insertTags(PortalTagPostParamBean bean);
	
	public List<PortalTagMap> queryTagByEntity(@Param(value="companyCode")String companyCode,@Param(value="username")String username,@Param(value="entityName")String entityName,@Param(value="entityId")Integer entityId);
	
	/**
	 * 新增tag
	 * @Date        :      2017年9月25日
	 * @param portalTagMap
	 * @return
	 */
	public int addTags(PortalTagMap portalTagMap);
	
	/**
	 * 删除tag
	 * @Date        :      2017年9月25日
	 * @param tagId
	 */
	public void delTags(@Param(value="tagId")Integer tagId);
	
	public int allMyTagsCount(@Param(value="companyCode")String companyCode,@Param(value="username")String username);
}
